#ifndef PLUGINDAO_H
#define PLUGINDAO_H

#include <QCache>
#include <QList>

#include "../Pojo/plugin.h"
#include "../Specification.h"

class PluginDao
{
public:
	PluginDao();

	/* 查找 */
	Plugin* findOne(const quint32 &id);
	Plugin* findOne(const Specification &spec);

	QList<Plugin> findAll(const Specification &spec);

	/* 保存 */
	void save(const Plugin *plugin);

	/* 删除 */
	void del(const quint32 &id);

private:
	/* 单条记录缓存，key:"id"，value:"Plugin" */
	static QCache<QString, Plugin> pluginCache;
	/* 缓存多条记录，key:"方法名+参数"，value：plugin列表 */
	static QCache<QString, QList<Plugin>> pluginsCache;
};

#endif // PLUGINDAO_H
